package com.eedi.framework.sms.service;


import com.eedi.framework.common.enums.CommonStatusEnum;
import com.eedi.framework.common.pojo.PageResult;
import com.eedi.framework.common.validation.AddGroup;
import com.eedi.framework.common.validation.UpdateGroup;
import com.eedi.framework.sms.controller.sys.vo.SysSmsPageReq;
import com.eedi.framework.sms.controller.sys.vo.SysSmsResp;
import com.eedi.framework.sms.controller.sys.vo.SysSmsSaveReq;
import com.eedi.framework.sms.dal.dataobject.SysSmsDO;
import com.eedi.framework.sms.enums.SmsSceneEnum;
import org.springframework.validation.annotation.Validated;


/**
 * 短信 Service 接口
 *
 * @author 永聚长青源码
 */
public interface SmsService {

    /**
     * 创建短信
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createSms(@Validated({AddGroup.class}) SysSmsSaveReq createReqVO);

    /**
     * 更新短信
     *
     * @param updateReqVO 更新信息
     */
    void updateSms(@Validated({UpdateGroup.class}) SysSmsSaveReq updateReqVO);

    /**
     * 删除短信
     *
     * @param systemSmsId 编号
     */
    void deleteSms(String systemSmsId);

    /**
     * 获得短信
     *
     * @param systemSmsId 编号
     * @return 短信
     */
    SysSmsDO getSms(String systemSmsId);

    /**
     * 获得短信分页
     *
     * @param pageReqVO 分页查询
     * @return 短信分页
     */
    PageResult<SysSmsResp> getSmsPage(SysSmsPageReq pageReqVO);

    /**
     * 更新短信配置状态
     * @param systemSmsId
     * @param systemSmsTemplateId
     * @param status
     */
    void updateSmsStatus(String systemSmsId, String systemSmsTemplateId, CommonStatusEnum status);

    /**
     * 是否发送短信
     * @param smsScene
     * @return
     */
    boolean isSendSms(SmsSceneEnum smsScene);

}
